package chapter_16;

import java.util.BitSet;


// java.util 第二部分：更多的实用工具类

/*
16.1 StringTokenizer（字符串标记）

 */


/*
16.2 BitSet（置位）
BitSet类创建一个专用类型的数组，该数组包含位的值。而该数组的大小可以按需要进
行增加。这使得它与位矢量相似。BitSet的构造函数如下所示：
BitSet( )
BitSet(int size)
所有的位被初始化为0。
 */

class BitSetDemo {
    // 16.2
    static void runner() {
        BitSet bits1 = new BitSet(16);
        BitSet bits2 = new BitSet(16);
        // set some bits
        for(int i=0; i<16; i++) {
            if((i%2) == 0) bits1.set(i);
            if((i%5) != 0) bits2.set(i);
        }
        System.out.println("Initial pattern in bits1: ");
        System.out.println(bits1);
        System.out.println("\nInitial pattern in bits2: ");
        System.out.println(bits2);
        // AND bits
        bits2.and(bits1);
        System.out.println("\nbits2 AND bits1: ");
        System.out.println(bits2);
        // OR bits
        bits2.or(bits1);
        System.out.println("\nbits2 OR bits1: ");
        System.out.println(bits2);
        // XOR bits
        bits2.xor(bits1);
        System.out.println("\nbits2 XOR bits1: ");
        System.out.println(bits2);
    }
}


/*
16.3 Date（日期）
Date支持下面的构造函数：
Date( )
Date(long millisec)
第一种形式的构造函数用当前的日期和时间初始化对象。第二种形式的构造函数接收
一个参数，该参数等于从1970年1月1日午夜起至今的毫秒数的大小。
 */


/*
16.4 Calendar（日历）
 */


/*
16.5 GregorianCalendar（标准阳历）
 */


/*
16.6 TimeZone（时区）
 */


/*
16.7 SimpleTimeZone
 */


/*
16.8 Locale（地区）
 */


/*
16.9 Random
Random类是伪随机数的产生器。之所以称之为伪随机数是因为它们是简单的均匀分布
序列。Random定义了下面的构造函数。
Random( )
Random(long seed)
第一种形式创建一个使用当前时间作为起始值或称为初值的数字发生器。第二种形式
允许人为指定一个初值。
 */


/*
16.10 Observable（观测）
Observable类用于创建可以观测到你的程序中其他部分的子类。当这种子类的对象发生
变化时，观测类被通知。观测类必须实现定义了update( )方法的Observer接口。当一个观测
程序被通知到一个被观测对象的改变时，update( )方法被调用。
 */


/*
16.11 Timer和TimerTask
提供了提前安排将来某时间要执行任务的能力。支持这项功能的类是Timer和TimerTask。
使用这些类可以创建一个工作于后台的线程，该线程等待一段指定的时间。当指定的时间到
来时，与该线程相连的任务被执行。不同的选项允许安排一个任务重复执行，或安排一个任
务在指定的时间运行。尽管永远都可能使用Thread类利用手工方法创建一个在指定的时间
执行的任务，但是使用Timer和TimerTask却大大简化了这一过程。
Timer和TimerTask一起工作。Timer是一个用于安排一个将来执行的任务的类。被安排
的任务必须是TimerTask的一个实例。因此，为了安排一个任务，首先应该创建一个
TimerTask对象，然后使用Timer的一个实例安排执行它。
TimerTask实现了Runnable接口；因此它可以被用于创建一个执行线程。它的构造函数
如下所示：
TimerTask( )
 */


/*
16.12 java.util.zip包
 */


/*
16.13 java.util.jar包
 */



public class chapter_16 {
    // 16.2

    public static void main(String[] args) {
        BitSetDemo.runner();
    }
}
